Skip to content

Conversation

HoneyryderChuck
Copy link
Contributor

To open the discussion on a solution approach for #731 .

A (relatively) conservative way to solve having "IO duck types" being passed to an SSLSocket, would be to use BIO_mem. This seems to be how python infrastructure deals with it as well.

In order to do so, the socket needs to hold the rbio and wbio somewhere. This is achievable by creating the internal structure holding ssl variables, which holds the SSL object for now, and can latter be used to access the bios as well.

connect/read/write/close operations can then be rewritten to contain a conditional path to deal with sslsockets holding bios (which means, it holds an "IO quack").

@rhenium
Copy link
Member

rhenium commented Mar 27, 2024

Wrapping the SSL struct should be unnecessary. SSL has the ex_data to store an arbitrary data with it, and in ruby/openssl, every SSL struct has a corresponding SSLSocket object, so we can use its instance variables storage too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants